
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Elasticsearch 的核心组件有哪些？它们各自的作用是什么？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Elasticsearch 的核心组件有哪些？它们各自的作用是什么？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">Elasticsearch中的集群（Cluster）核心作用是什么？它如何实现可扩展性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">集群是一个或多个节点的集合，这些节点共同工作并存储所有的索引数据。它通过一个唯一的名称来标识和协调。集群提供水平扩展能力，可以通过动态地添加或移除节点来适应工作负载的变化。</div>
          </div>
          <div class="card-source">来源: 1. 集群 (Cluster)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">角色</div>
          <div class="card-question">请阐述Elasticsearch中主节点(Master Node)和数据节点(Data Node)的核心职责有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">角色</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主节点（Master Node）负责管理集群状态，执行分片分配、集群管理等任务。而数据节点（Data Node）则负责存储实际数据，并处理数据相关的操作，如索引和搜索请求。</div>
          </div>
          <div class="card-source">来源: 2. 节点 (Node)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">在Elasticsearch中，索引（Index）是什么？它与传统关系型数据库中的哪个概念相似？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">索引是一个拥有类似结构文档集合的逻辑命名空间，用于标识存储和查询操作。在关系数据库中，它相当于一个数据库表。</div>
          </div>
          <div class="card-source">来源: 3. 索引 (Index)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">为什么说分片（Shard）是Elasticsearch实现水平扩展和负载均衡的关键？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">分片是索引的底层工作单元，它允许将数据分散在不同的节点上。这种机制使得Elasticsearch能够水平扩展（通过增加节点来分散分片）和实现负载均衡（请求可以分布到持有相关分片的多个节点上）。</div>
          </div>
          <div class="card-source">来源: 4. 分片 (Shard)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Elasticsearch中的副本分片（Replica Shard）主要提供哪两大好处？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">副本分片是主分片的拷贝，它主要用于提升数据的可用性（当主分片丢失时可以作为备份）和查询吞吐量（搜索请求可以由副本分片处理，分担主分片的压力）。</div>
          </div>
          <div class="card-source">来源: 4. 分片 (Shard)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">Elasticsearch中最小的数据单元是什么？它采用什么格式，并由哪些基本部分构成？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档（Document）是Elasticsearch中最小的数据单元。它是一个JSON格式的对象，存储在索引中，并由唯一的ID标识。文档包含字段（field）和相应的值。</div>
          </div>
          <div class="card-source">来源: 5. 文档 (Document)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">什么是集群状态（Cluster State）？在集群中，它是由哪个节点来维护和分发的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">集群状态是集群中的所有元数据，包括索引元数据、分片位置、节点信息等。主节点（Master Node）负责维护并分发集群状态的最新版本到其他节点，以确保所有节点具有相同的视图。</div>
          </div>
          <div class="card-source">来源: 6. 集群状态 (Cluster State)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Elasticsearch中的映射（Mapping）具体定义了哪些内容？为什么说一个好的映射设计至关重要？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">映射定义了文档及其字段在索引中的结构。它指定了每个字段的数据类型（如字符串、数字等）以及如何进行索引和存储。良好的映射设计可以显著提高搜索性能和查询准确性。</div>
          </div>
          <div class="card-source">来源: 7. 映射 (Mapping)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">角色</div>
          <div class="card-question">协调节点（Coordinating Node）在处理查询请求时扮演什么角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">角色</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">协调节点负责路由请求到持有相关数据的数据节点，并对来自不同节点的结果进行处理聚合和合并，最终将完整的结果返回给客户端，以此来优化查询执行。</div>
          </div>
          <div class="card-source">来源: 2. 节点 (Node)</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
